Gestion manuelle de la mémoire via new et delete crée un contrat de responsabilité fragile "contrat de responsabilité". Le programmeur doit prédire parfaitement chaque chemin d'exécution, y compris les retours anticipés et les exceptions, afin de garantir que les ressources soient libérées. Cette approche est sujette à des défaillances systémiques.
Les défaillances systémiques
- Le piège de fuite de mémoire : Dans une logique complexe (si-sinon, switch), omettre de coupler chaque
newavecdeletedégrade progressivement les performances du système. - Invalidation des pointeurs : Erreurs telles que Pointeurs pendus (accès à la mémoire après suppression) ou Double suppression déclenchent un comportement indéfini et des vulnérabilités de sécurité.
- Sécurité des exceptions : Si une exception survient entre l'allocation et la désallocation, le
deleteest entièrement ignoré.
L'évolution de l' évolution
C++11/14 a repensé le <memory> en-tête pour abandonner les "pointeurs nus" au profit de modèles automatisés de possession qui imposent la sécurité au niveau du compilateur.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>